﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Entidad;
public partial class web_cd : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack) //Solo la primera vez carga la grilla
        {
            CargarGrilla();
            Nuevo();
            cargarGeneros();
            cargarSellosDiscograficos();
        }
    }
    private void cargarGeneros()
    {
        cboGeneros.DataSource = DAO.DAOGenero.getTodas();
        cboGeneros.DataTextField = "GeneroDescripcion";
        cboGeneros.DataValueField = "GeneroId";
        cboGeneros.DataBind();
        cboGeneros.Items.Insert(0, new ListItem("(Sin Seleccion)", ""));
    }

    private void cargarSellosDiscograficos()
    {
        cboSelloDiscografico.DataSource = DAO.DAOSelloDiscografico.getTodas();
        cboSelloDiscografico.DataTextField = "SelloDescripcion";
        cboSelloDiscografico.DataValueField = "SelloId";
        cboSelloDiscografico.DataBind();
        cboSelloDiscografico.Items.Insert(0, new ListItem("(Sin Seleccion)", ""));

    }

    private void CargarGrilla()
    {
        gvCD.DataSource = DAO.DAOCD.getTodas();
        gvCD.DataKeyNames = new string[] { "id_cd" };
        gvCD.DataBind();
    }

    protected void btnNuevo_Click(object sender, EventArgs e)
    {
        Nuevo();
    }

    private void Nuevo()
    {
        cboSelloDiscografico.ClearSelection();
        cboSelloDiscografico.SelectedIndex = 0;
        cboGeneros.ClearSelection();
        cboGeneros.SelectedIndex = 0;
        txtCodigoCd.Text = string.Empty;
        txtFechaPublicacion.Text = string.Empty;
        txtFechaReposicion.Text = string.Empty;
        txtPrecioVenta.Text = string.Empty;
        txtStock.Text = string.Empty;
        txtTitulo.Text = string.Empty;
        btnEliminar.Enabled = false;
        ViewState["CDId"] = null;
    }
    protected void btnAceptar_Click(object sender, EventArgs e)
    {
        if (ViewState["CDId"] == null)
        {
            //es un alta
            EntidadCD cd = new EntidadCD();
            cd.codigo_cd = int.Parse(txtCodigoCd.Text);
            if (!string.IsNullOrEmpty(txtFechaPublicacion.Text))
            {
                cd.fecha_publicacion = DateTime.Parse(txtFechaPublicacion.Text);
            }
            cd.fecha_ultima_reposicion = DateTime.Parse(txtFechaReposicion.Text);
            cd.precio_venta = float.Parse(txtPrecioVenta.Text);
            cd.stock = int.Parse(txtStock.Text);
            cd.titulo = txtTitulo.Text;
            if (cboGeneros.SelectedIndex > 0)
            {
                cd.id_genero = int.Parse(cboGeneros.SelectedValue);
            }
            if (cboSelloDiscografico.SelectedIndex > 0)
            {
                cd.id_sello_discografico = int.Parse(cboSelloDiscografico.SelectedValue);
            }
            DAO.DAOCD.Guardar(cd);
        }
        else
        {
            //estoy modificando
            int cdId = int.Parse(ViewState["CDId"].ToString());
            EntidadCD cd = DAO.DAOCD.Buscar(cdId);
            if (cboGeneros.SelectedIndex > 0){
                cd.id_genero = int.Parse(cboGeneros.SelectedValue);
            }
            else
            {//ojo no puede ser null
                cd.id_genero = null;
            }
            if (cboSelloDiscografico.SelectedIndex > 0){
                cd.id_sello_discografico = int.Parse(cboSelloDiscografico.SelectedValue);
            }
            else
            {//ojo no puede ser null
                cd.id_sello_discografico = null;
            }
            cd.codigo_cd = int.Parse(txtCodigoCd.Text);
            if (!string.IsNullOrEmpty(txtFechaPublicacion.Text))
            {
                cd.fecha_publicacion = DateTime.Parse(txtFechaPublicacion.Text);
            }
            cd.fecha_ultima_reposicion = DateTime.Parse(txtFechaReposicion.Text); 
            cd.precio_venta = float.Parse(txtPrecioVenta.Text);
            cd.stock = int.Parse(txtStock.Text);
            cd.titulo = txtTitulo.Text;
            DAO.DAOCD.Actualizar(cd);
        }
        CargarGrilla();
        Nuevo();
    }
    protected void gvCD_SelectedIndexChanged(object sender, EventArgs e)
    {
        int cdId = (int)gvCD.SelectedDataKey.Value;
        EntidadCD cd = DAO.DAOCD.Buscar(cdId);
        Nuevo();
        if (cd != null)
        {
            txtTitulo.Text = cd.titulo;
            txtStock.Text = cd.stock.Value.ToString();
            txtPrecioVenta.Text = cd.precio_venta.ToString();
            txtCodigoCd.Text = cd.codigo_cd.Value.ToString();
            cboGeneros.SelectedValue = cd.id_genero.ToString();
            cboSelloDiscografico.SelectedValue = cd.id_sello_discografico.ToString();
            txtFechaReposicion.Text = cd.fecha_ultima_reposicion.Value.ToShortDateString();
            if (cd.fecha_publicacion.HasValue)
            {
                txtFechaPublicacion.Text = cd.fecha_publicacion.Value.ToShortDateString();
            }           
            ViewState["CDId"] = cd.id_cd;
            btnEliminar.Enabled = true;
        }
    }
    protected void btnEliminar_Click(object sender, EventArgs e)
    {
        if (ViewState["CDId"] != null)
        {
            Entidad.EntidadCD cd = new EntidadCD();
            int cdId = int.Parse(ViewState["CDId"].ToString());
            cd.id_cd = cdId;
            DAO.DAOCD.Eliminar(cd);
            Nuevo();
            CargarGrilla();
        }
    }
}